/**
 * alert
 */
core.ui.alert=(function(){

    var text={
        confirm:'确认',
        cancel:'取消'
    };

    var defaultOptions={
        html:true
    };

    var alert={};

    /**
     * @param message
     * @param type
     * @param options
     * @param confirmCallback
     * @param cancelCallback
     */
    alert.base=function(message,type,options,confirmCallback,cancelCallback){
        if(stringUtil.isBlank(message)) {
            return;
        }

        options=$.extend({},defaultOptions,options);

        options.text='';
        options.title=message;
        options.type=type;

        if(objectUtil.isNotNull(confirmCallback)) {
            if(confirmCallback.toString().indexOf('core.ui.alert')==-1) {
                options.closeOnConfirm=true;
            }
            else {
                options.closeOnConfirm=false;
            }
        }

        if(objectUtil.isNotNull(cancelCallback)) {
            options.showCancelButton=true;
        }

        if(stringUtil.isBlank(options.confirmButtonText)) {
            options.confirmButtonText=text.confirm;
        }

        if(stringUtil.isBlank(options.cancelButtonText)) {
            options.cancelButtonText=text.cancel;
        }

        swal(options, function(isConfirm) {
            if (isConfirm) {
                if(objectUtil.isNull(confirmCallback)){
                    return;
                }

                confirmCallback();
            } else {
                if(objectUtil.isNull(cancelCallback)){
                    return;
                }

                cancelCallback();
            }
        });
    };

    /**
     * @param message
     * @param confirmCallback
     * @param cancelCallback
     * @param options
     */
    alert.success=function(message,confirmCallback,cancelCallback,options){
        alert.base(message,'success',options,confirmCallback,cancelCallback);
    };

    /**
     * @param message
     * @param confirmCallback
     * @param cancelCallback
     * @param options
     */
    alert.info=function(message,confirmCallback,cancelCallback,options){
        alert.base(message,'info',options,confirmCallback,cancelCallback);
    };

    /**
     * @param message
     * @param confirmCallback
     * @param cancelCallback
     * @param options
     */
    alert.warning=function(message,confirmCallback,cancelCallback,options){
        alert.base(message,'warning',options,confirmCallback,cancelCallback);
    };

    /**
     * @param message
     * @param title
     * @param confirmCallback
     * @param cancelCallback
     * @param options
     */
    alert.error=function(message,confirmCallback,cancelCallback,options){
        alert.base(message,'error',options,confirmCallback,cancelCallback);
    };

    return alert;
})();